
dojo.provide("dojo.validate.creditCard");dojo.require("dojo.lang.common");dojo.require("dojo.validate.common");dojo.validate.isValidCreditCard=function(value,ccType){if(value&&ccType&&((ccType.toLowerCase()=="er"||dojo.validate.isValidLuhn(value))&&(dojo.validate.isValidCreditCardNumber(value,ccType.toLowerCase())))){return true;}
return false;};dojo.validate.isValidCreditCardNumber=function(value,ccType){if(typeof value!="string"){value=String(value);}
value=value.replace(/[- ]/g,"");var results=[];var cardinfo={"mc":"5[1-5][0-9]{14}","ec":"5[1-5][0-9]{14}","vi":"4([0-9]{12}|[0-9]{15})","ax":"3[47][0-9]{13}","dc":"3(0[0-5][0-9]{11}|[68][0-9]{12})","bl":"3(0[0-5][0-9]{11}|[68][0-9]{12})","di":"6011[0-9]{12}","jcb":"(3[0-9]{15}|(2131|1800)[0-9]{11})","er":"2(014|149)[0-9]{11}"};if(ccType&&dojo.lang.has(cardinfo,ccType.toLowerCase())){return Boolean(value.match(cardinfo[ccType.toLowerCase()]));}else{for(var p in cardinfo){if(value.match("^"+cardinfo[p]+"$")!=null){results.push(p);}}
return(results.length)?results.join("|"):false;}};dojo.validate.isValidCvv=function(value,ccType){if(typeof value!="string"){value=String(value);}
var format;switch(ccType.toLowerCase()){case"mc":case"ec":case"vi":case"di":format="###";break;case"ax":format="####";break;default:return false;}
var flags={format:format};if((value.length==format.length)&&(dojo.validate.isNumberFormat(value,flags))){return true;}
return false;};